package com.zw.pdm.module.production.mapper;

import com.zw.pdm.entity.designtask.DsnProStruct;
import com.zw.pdm.entity.production.MakeResult;
import com.zw.pdm.entity.production.MakeSheet;
import com.zw.pdm.module.production.model.MakeChangeModel;
import com.zw.pdm.module.production.model.MakeResultModel;
import com.zw.pdm.module.production.model.MakeSheetModel;
import com.zw.pdm.module.report.model.Project;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface    MakeSheetMapper {

    /** myf制作件提报计划 列表查询 */
    List<MakeSheet> findEqIdWithMakeSheetReportList(MakeSheet sheet);

    /** myf制作件提报计划 列表查询 */
    List<MakeSheet> findInIdWithMakeSheetReportList(MakeSheet sheet);

    /** myf按ID查询制作件主表Make_sheet */
    MakeSheet getMakeOne(Integer id);

    /** myf按ID 修改 isDel */
    int updateMakeSheetIsDelById(@Param("id") Integer id, @Param("isDel") Integer status);

    /** myf按 ID 修改 status */
    int updateMakeStatusAndRejectReasonById(@Param("id") Integer id, @Param("reject") String rejectReason, @Param("status") Integer status);

    /** 提报计划审核 列表查询 */
    List<MakeSheetModel> findWithProductionCheck(MakeSheetModel sheet);

    /** 插入输出表数据 */
    int insertMakeResult(Integer id);

    /** 插入输出表数据 */
    int insertMakeChangeResult(Integer id);

    /** 提报计划查询 列表查询 */
    List<MakeSheet> findWithMakeReportQuery(MakeSheet makeSheet);

    /** myf根据项目编号和专业类型查询部分 */
    List<DsnProStruct> findMakePartByProjectCode(@Param("code") String code,@Param("type") String type);

    /** 通过sheetId查寻makeResult下面的数据*/
    List<MakeResult> findMakeResultSheetId(@Param("id") Integer id);
    /** 通过sheetId查询出主表变更表和输出表的关联数据*/
    List<MakeResultModel> findMakeChangeResultSheetId(@Param("sheetId") Integer sheetId);

    /** 通过change表变更删除*/
    int updateMakeChangeResult(Integer id);

    /** 通过plan表变更删除*/
    int updateMakePlanResult(Integer id);

    /** myf如果有删除的时候需要展示的数据请调用此方法：查看明细的方法包含变更删除的数据*/
    List<MakeChangeModel> findMakeResultChangeBySheetId(@Param("sheetId") Integer sheetId);

    /** myf根据手动输入的项目编号模糊查询设计类型的项目信息*/
    List<Project> findDesignProjectByCode(String q);

    /** 通过项目号查询主表里面的未提交的数据的id*/
    List<Integer> getNotSubmitId(String proCode);
}